#ifndef __TREATY_BASE_H__
#define __TREATY_BASE_H__
#include <config.h>
#include <iostream>
#include <vector>
using namespace std;
class treaty_base
{
private:
public:
    treaty_base();
    /**
     * @brief 向数组中写入 uint8_t 类型数据
     * @param vec 存储数据的数组
     * @param data 要写入的数据
     * @return uint32_t 写入数据的长度
     */
    uint32_t msb_push_u8_to_array(vector<uint8_t> &vec, const uint8_t data);
    /**
     * @brief 向数组中写入 uint16_t 类型数据
     * @param vec 存储数据的数组
     * @param data 要写入的数据
     * @return uint32_t 写入数据的长度
     */
    uint32_t msb_push_u16_to_array(vector<uint8_t> &vec, const uint16_t data);
    uint32_t lsb_push_u16_to_array(vector<uint8_t> &vec, const uint16_t data);
    /**
     * @brief 向数组中写入 uint32_t 类型数据
     * @param vec 存储数据的数组
     * @param data 要写入的数据
     * @return uint32_t 写入数据的长度
     */
    uint32_t msb_push_u32_to_array(vector<uint8_t> &vec, const uint32_t data);
    /**
     * @brief 向数组中写入 float 类型数据
     * @param vec 存储数据的数组
     * @param data 要写入的数据
     * @return uint32_t 写入数据长度
     */
    uint32_t msb_push_float_to_array(vector<uint8_t> &vec, const float data);
    /**
     * @brief 向数组中写入数组类型数据
     * @param vec 存储数据的数组
     * @param data 要写入的数据
     * @param len 要写入的数据长度
     * @return uint32_t 写入数据长度
     */
    uint32_t msb_push_array_to_array(vector<uint8_t> &vec, const uint8_t *data, uint16_t len);

    /****=========================================================****/

    /**
     * @brief 创建 treaty 协议头
     * @param vec 存储 treaty 协议头
     * @param ev_id 事件ID
     * @param cmd 命令ID  事务处理标识符
     * @return uint32_t 协议头长度
     */
    uint32_t create_treaty_header(vector<uint8_t> &vec, const uint16_t ev_id, vector<uint8_t> &data);
};
#endif